<?php
    /*
    * Copyright (c) 2007, Osuvaldo Ramos
    * 
    * All rights reserved.
    * 
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions are
    * met:
    *
    *    * Redistributions of source code must retain the above copyright
    *      notice, this list of conditions and the following disclaimer.
    *    * Redistributions in binary form must reproduce the above copyright
    *      notice, this list of conditions and the following disclaimer in the
    *      documentation and/or other materials provided with the distribution.
    *    * Neither the name of the CoreTech nor the names of its
    *      contributors may be used to endorse or promote products derived from
    *      this software without specific prior written permission.
    * 
    * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
    * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
    * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    * 
    * $Id: ErrorHandler.php 2 2008-01-21 02:48:28Z xdracox $
    */
    
    if ( !defined('BNETCS') || !defined('ROOT') ) exit();
    
    class ErrorHandler
    {
        function error($errno, $errstr, $errfile, $errline, $errcontext)
        {
            $logdir = ROOT . '/log';
            
            if ( !file_exists($logdir) )
                mkdir($logdir);
            
            $p = '';
            switch ( $errno )
            {
                case E_ERROR:
                case E_USER_ERROR:
                    $p = 'Fatal Error';
                    break;
                case E_WARNING:
                case E_USER_WARNING:
                    $p = 'Warning';
                    break;
                case E_NOTICE:
                case E_USER_NOTICE:
                    $p = 'Notice';
                    break;
                default:
                    $p = 'Unknown';
                    return false;
                    break;
            }
            
            $time = time();
            $date = date('d-m-y', $time);
            $logfile = $logdir . '/' . $date . '.err';
            $ftime = date('H:i:s', $time);
            $fh = fopen($logfile, 'a');
            $logline = sprintf("[%s] %s @ %s  - [%s] %s\n", $time, $date,
                $ftime, $p, $errstr);
            fwrite($fh, $logline);
            fclose($fh);
            
            if ( $errno & ( E_ERROR | E_USER_ERROR) != 0 )
                exit('A fatal error has occurred, please report this to someone'
                    . ' with today\s date and the following error number: '
                    . $time);
            
            return true;
        }
    }
?>
